home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Headers / misckit / MiscTimedEntry.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-12  |  2.6 KB  |  90 lines

  1. /*
  2.  *     File:     MiscTimedEntry.h
  3.  *  Version:    1.0
  4.  *   Author:    James T. Romano
  5.  *  Summary:    This class defines a timer that will call back a 
  6.  *                target object with a selectable message.  The timer may be
  7.  *                set up to go off once, repeat a N times, or repeat indefinately.
  8.  *                Also, the timer may be run in another thread.
  9.  *
  10.  *    Revision History:    
  11.  *        Dec 1994    james    created
  12.  *        Dec    1994    steveq    tweaked
  13.  *
  14.  *    Copyright 1994    James T. Romano    james@hbsd-im.telerate.com
  15.  *
  16.  *        A timed entry blocks, waiting for a timer return, then sends the
  17.  *        action message to the target. A timed entry may be run in it's own
  18.  *        thread, providing an asyncronous interupt, or run, providing a 
  19.  *        thread safe blocking timer.  Of course, when run in it's own thread, 
  20.  *        the call back will be run in the timer's thread.
  21.  *
  22.  *        Time is measured in milliseconds.
  23.  *        Action methods *must* be of the form " - methodName:sender;"
  24.  *        When sent, 'sender' will be the MiscTimedEntry instance.
  25.  *
  26.  *        An example:
  27.  *            MiscTimedEntry *te = [[MiscTimedEntry alloc] init];
  28.  *            [te setTarget:someTarget];
  29.  *            [te setAction:@selector(someActionForTarget:)];
  30.  *            [te setInterval:5*1000];     // 5 second interval
  31.  *            [te setUserData:someData];
  32.  *            if (async)
  33.  *                [te runInNewThread];     // returns immediately 
  34.  *            else
  35.  *                [te run];                 // sender blocked until 'run' ends
  36.  *                
  37.  *                
  38.  */
  39. #import <misckit/MiscThreadedObject.h>
  40. #import <mach/port.h>
  41.  
  42. @interface MiscTimedEntry : MiscThreadedObject
  43. {
  44.     void    *userdata;
  45.     id     target;            // instance that will receive a call
  46.     SEL    action;            // A method that a target responds to
  47.     int    interval;        // Time to wait in milliseconds
  48.     port_t    port;        // Mach port for this object.
  49.     int    repeatCount;    // a value of -1 => forever (default)
  50. }
  51.  
  52. - init;
  53. - initWithTarget:aTarget action:(SEL)anAction interval:(int)ival data:(void *)data;
  54.  
  55. // This method runs the entry
  56. // If it returns nil, then you haven't properly set the target
  57. // and action for this object.
  58. - run;
  59. - stop;            /* stops the timer without freeing it */
  60. - free;            /* stops (if needed) and frees */
  61.  
  62. #ifdef DONTDEFINE
  63. // this would be compatabile with NS 3.3
  64. - (void)setTarget:sender;
  65. - (void)setAction:(SEL)anAction;
  66. #endif
  67.  
  68. #ifndef DONTDEFINE
  69. // we define it this way for now to be compatible with NS 3.2
  70. - setTarget:sender;
  71. - setAction:(SEL)anAction;
  72. #endif
  73.  
  74. - (void)setInterval:(int)anInterval;
  75. - (void)setUserData:(void *)userData;
  76. - (void)setRepeatCount:(int)count;
  77.  
  78. // Set mach port so communication to a timed entry is possible
  79. - (void)setPort:(int)aPort;
  80.  
  81. - (void *)userData;
  82. - target;
  83. - (SEL)action;
  84. - (int)interval;
  85. - (int)port;
  86. - (int)repeatCount;
  87.  
  88. @end
  89.  
  90.